#Choix entre nCurses (texte) et SDL (graphique)
#JEU 	= texte
JEU 	= graphique

#OS	= WIN32
OS	= LINUX

#Sources communes a SDL et Ncurses
SRC = 	main.c  Niveau.c Heros.c  Bonus.c Trajectoire.c Tir.c Terrain.c  ArmeSecondaire.c \
	ArmePrincipale.c Ennemi.c TabEnnemis.c TabTirs.c Boss.c Collision.c \
	TabBonus.c Profil.c

#declaration des sources et du nom de l executable cree pour chaque executable de test	
SRC_TEST_ARM_PRIN = test_arm_prin.c ArmePrincipale.c Tir.c Trajectoire.c Terrain.c
TARGET_TEST_ARM_PRIN = test_arm_prin
SRC_TEST_ARM_SEC = test_arm_sec.c ArmeSecondaire.c Tir.c Trajectoire.c Terrain.c
TARGET_TEST_ARM_SEC = test_arm_sec
SRC_TEST_HEROS = test_heros.c Heros.c Terrain.c ArmePrincipale.c ArmeSecondaire.c Tir.c Trajectoire.c 
TARGET_TEST_HEROS = test_heros
SRC_TEST_ENNEMI = test_ennemi.c Ennemi.c Heros.c ArmePrincipale.c ArmeSecondaire.c Terrain.c Tir.c Trajectoire.c 
TARGET_TEST_ENNEMI = test_ennemi
SRC_TEST_BOSS = test_boss.c Boss.c Trajectoire.c Tir.c Heros.c ArmePrincipale.c ArmeSecondaire.c Terrain.c
TARGET_TEST_BOSS = test_boss
SRC_TEST_TIR = test_tir.c Tir.c Trajectoire.c Terrain.c
TARGET_TEST_TIR = test_tir
SRC_TEST_TRAJ = test_trajectoire.c Trajectoire.c Terrain.c
TARGET_TEST_TRAJ = test_traj
SRC_TEST_COLLISON = test_collision.c Collision.c Heros.c Ennemi.c Boss.c Bonus.c Tir.c Trajectoire.c Terrain.c ArmePrincipale.c ArmeSecondaire.c
TARGET_TEST_COLLISION = test_collision
SRC_TEST_TERRAIN = test_terrain.c Terrain.c 
TARGET_TEST_TERRAIN = test_terrain
SRC_TEST_TABENNEMIS = test_tabennemis.c TabEnnemis.c Ennemi.c Trajectoire.c Terrain.c Heros.c Tir.c ArmePrincipale.c ArmeSecondaire.c
TARGET_TEST_TABENNEMIS = test_tabennemis
SRC_TEST_TABTIRS = test_tabtirs.c TabTirs.c Tir.c Trajectoire.c Terrain.c 
TARGET_TEST_TABTIRS = test_tabtirs
SRC_TEST_TABBONUS = test_tabbonus.c TabBonus.c Bonus.c Terrain.c Tir.c Trajectoire.c Heros.c Ennemi.c Boss.c ArmePrincipale.c ArmeSecondaire.c
TARGET_TEST_TABBONUS = test_tabbonus
SRC_TEST_NIVEAU = $(SRC) sdlNiveau.c
TARGET_TEST_NIVEAU = test_niveau
SRC_TEST_PROFIL = test_profil.c Profil.c
TARGET_TEST_PROFIL = test_profil




ifeq ($(JEU),texte)
	SRCS = $(SRC) ncursNiveau.c
	TARGET = poireau_txt
	DEFINE = -DJEU_NCURSES -lncurses
	
else 
	SRCS =  $(SRC) sdlNiveau.c Menu.c
	TARGET = poireau_sdl
	DEFINE = -DJEU_SDL -lSDLmain -lSDL -lSDL_image -lSDL_ttf   
	
endif

FLAGS = `pkg-config --libs --cflags gtk+-2.0` -Wall -ggdb -lm $(DEFINE)
FLAGSS = `pkg-config --libs --cflags gtk+-2.0` -Wall -ggdb -lm -DJEU_SDL -lSDLmain -lSDL -lSDL_image -lSDL_ttf 

OBJ_DIR = obj
SRC_DIR = src
BIN_DIR = bin


#Permet de generer soit l executable poireau_sdl soit poireau_txt
all: $(BIN_DIR)/$(TARGET)

$(BIN_DIR)/$(TARGET): $(SRCS:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@


#Permet de generer individuellement les executables de test de chaque module
testarmeprincipale: $(BIN_DIR)/$(TARGET_TEST_ARM_PRIN)

$(BIN_DIR)/$(TARGET_TEST_ARM_PRIN): $(SRC_TEST_ARM_PRIN:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testarmesecondaire: $(BIN_DIR)/$(TARGET_TEST_ARM_SEC)

$(BIN_DIR)/$(TARGET_TEST_ARM_SEC): $(SRC_TEST_ARM_SEC:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testboss: $(BIN_DIR)/$(TARGET_TEST_BOSS)

$(BIN_DIR)/$(TARGET_TEST_BOSS): $(SRC_TEST_BOSS:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testcollision: $(BIN_DIR)/$(TARGET_TEST_COLLISION)

$(BIN_DIR)/$(TARGET_TEST_COLLISION): $(SRC_TEST_COLLISON:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testennemi: $(BIN_DIR)/$(TARGET_TEST_ENNEMI)

$(BIN_DIR)/$(TARGET_TEST_ENNEMI): $(SRC_TEST_ENNEMI:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testheros: $(BIN_DIR)/$(TARGET_TEST_HEROS)

$(BIN_DIR)/$(TARGET_TEST_HEROS): $(SRC_TEST_HEROS:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testniveau: $(BIN_DIR)/$(TARGET_TEST_NIVEAU)

$(BIN_DIR)/$(TARGET_TEST_NIVEAU): $(SRC_TEST_NIVEAU:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGSS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGSS) $< -o $@
	
	
testprofil: $(BIN_DIR)/$(TARGET_TEST_PROFIL)

$(BIN_DIR)/$(TARGET_TEST_PROFIL): $(SRC_TEST_PROFIL:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testtabbonus: $(BIN_DIR)/$(TARGET_TEST_TABBONUS)

$(BIN_DIR)/$(TARGET_TEST_TABBONUS): $(SRC_TEST_TABBONUS:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testtabennemis: $(BIN_DIR)/$(TARGET_TEST_TABENNEMIS)

$(BIN_DIR)/$(TARGET_TEST_TABENNEMIS): $(SRC_TEST_TABENNEMIS:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testtabtirs: $(BIN_DIR)/$(TARGET_TEST_TABTIRS)

$(BIN_DIR)/$(TARGET_TEST_TABTIRS): $(SRC_TEST_TABTIRS:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testTERRAIN: $(BIN_DIR)/$(TARGET_TEST_TERRAIN)

$(BIN_DIR)/$(TARGET_TEST_TERRAIN): $(SRC_TEST_TERRAIN:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testtir: $(BIN_DIR)/$(TARGET_TEST_TIR)

$(BIN_DIR)/$(TARGET_TEST_TIR): $(SRC_TEST_TIR:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	
	
testtraj: $(BIN_DIR)/$(TARGET_TEST_TRAJ)

$(BIN_DIR)/$(TARGET_TEST_TRAJ): $(SRC_TEST_TRAJ:%.c=$(OBJ_DIR)/%.o)
	gcc $+ -o $@ $(FLAGS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	gcc -c $(FLAGS) $< -o $@
	

#Supprime tous les fichiers objets et executables
clean:
	rm -f $(OBJ_DIR)/*.o $(BIN_DIR)/*
	
